// /admin/product/{page}/{limit}
/*
{
    "code": 200,
    "message": "成功",
    "data": {
      "records": [
        {
          "id": 230,
          "spuName": "",
          "description": "空间的普及啊额的",
          "category3Id": 6,
          "tmId": 26772,
          "spuSaleAttrList": null,
          "spuImageList": null
        }
      ],
      "total": 1,
      "size": 6,
      "current": 1,
      "searchCount": true,
      "pages": 1
    },
    "ok": true
  }
  */

// 服务器返回全部SPU相关数据类型
export interface ResponseData {
  code: number
  message: string
  ok: boolean
}
// SPU数据的ts类型
export interface SpuData {
  category3Id: number | string // 三级分类的id
  id?: number | string // 主要是考虑新增和修改，新增没有id，修改有id
  spuName: string
  description: string
  tmId: number | string // 品牌的id
  spuImageList: null | SpuImg[] // 商品图片的数据
  spuSaleAttrList: null | SaleAttr[]
}

// 数组：元素都是已有SPU数据类型
export type SpuRecords = SpuData[]

// 获取已有的SPU接口返回的数据ts类型
export interface SpuResponseData extends ResponseData {
  data: {
    records: SpuRecords
    total: number
    size: number
    current: number
    searchCount: boolean
    pages: number
  }
}

// 所有品牌数据的ts类型
export interface Trademark {
  id: number
  tmName: string
  logoUrl: string
}

// 品牌接口返回的ts数据类型
export interface AllTrademark extends ResponseData {
  data: Trademark[]
}

// 商品图片的ts类型
export interface SpuImg {
  id?: number
  imgName?: string
  imgUrl?: string
  createTime?: string
  updateTIme?: string
  spuId?: number
  name?: string // 为了实现照片墙的功能而添加的属性
  url?: string // 为了实现照片墙的功能而添加的属性
}

// 已有的SPUd的照片墙数据的类型
export interface SpuHasImg extends ResponseData {
  data: SpuImg[]
}

// 已有的销售属性对象的ts类型
export interface SaleAttrValue {
  id?: number
  createTime?: null
  updateTime?: null
  spuId?: number
  baseSaleAttrId: number | string
  saleAttrValueName: string
  saleAttrName?: string
  isChecked?: boolean
}

// 存储已有的销售属性值数组ts类型
export type SpuSaleAttrValueList = SaleAttrValue[]

// 销售属性对象的ts类型
export interface SaleAttr {
  id?: number
  createTime?: null
  updateTime?: null
  spuId?: number
  baseSaleAttrId: number | string
  saleAttrName: string
  spuSaleAttrValueList: SpuSaleAttrValueList
  flag?: boolean // 添加属性值的时候，可以控制是展示还是编辑模式，对后端接口没有实际意义
  saleAttrValue?: string
}

// SPU已有的销售属性接口返回的ts类型
export interface SaleAttrResponseData extends ResponseData {
  data: SaleAttr[]
}

// 已有的全部SPU返回数据的ts类型
export interface HasSaleAttr {
  id: number
  name: string
}

export interface HasSaleAttrResponseData extends ResponseData {
  data: HasSaleAttr[]
}

// 平台属性
export interface Attr {
  attrId: string | number // 平台属性ID
  valueId: string | number // 属性值ID
}

// 销售属性
export interface saleAttr {
  saleAttrId: string | number // 属性ID
  saleAttrValueId: string | number // 属性值ID
}

export interface SkuData {
  category3Id: string | number //三级分类的ID
  spuId: string | number //已有的SPU的ID
  tmId: string | number //SPU品牌的ID
  //v-model收集
  skuName: string //sku名字
  price: string | number //sku价格
  weight: string | number //sku重量
  skuDesc: string //sku的描述
  skuAttrValueList?: Attr[] // 平台属性
  skuSaleAttrValueList?: saleAttr[]// 销售属性的收集
  skuDefaultImg: string //sku图片地址
}

// 获取SKU数据接口的ts类型
export interface SkuInfoData extends ResponseData {
  data: SkuData[]
}
